/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.smart.hawk.model.caller;

import co.com.smart.connection.model.manager.JDBCResourceManager;
import co.com.smart.hawk.dto.DepartamentoDTO;
import co.com.smart.hawk.dto.PaisDTO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Carlos Enaldo Ramos Hoyos
 * @fecha: 03/02/2017
 */
public class DepartamentosCaller extends JDBCResourceManager{
    
    public DepartamentosCaller(){
        super();
    }
    
    public List<DepartamentoDTO> listarDepartamentos(DepartamentoDTO departamento)throws Throwable{
        ArrayList<DepartamentoDTO> listDepartamentos = new ArrayList<>();
        
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;
        
        String sql = "select A.sm_scdepartamento, A.sm_codepartamento, "
                    +"A.sm_dsdepartamento, A.sm_scpais, "
                    +"A.sm_cousuario, A.sm_fhingreso, "
                    +"A.sm_fhmodificacion, A.sm_fhretiro "
                    +"from smart_departamento as A "
                    +"     inner join smart_pais as B on A.sm_scpais = B.sm_scpais "
                    +"where B.sm_copais = ? ";
        
        try{
            conn = getConnection();
            pst = conn.prepareStatement(sql);
            pst.setString(1, departamento.getPais().getCopais());
            rs = pst.executeQuery();
            
            if(rs!=null){
                while(rs.next()){
                    DepartamentoDTO departamentoDTO = new DepartamentoDTO();
                    PaisDTO paisDTO = new PaisDTO();
                    departamentoDTO.setScdepartamento(rs.getBigDecimal("sm_scdepartamento"));
                    departamentoDTO.setCodepartamento(rs.getString("sm_codepartamento"));
                    departamentoDTO.setDsdepartamento(rs.getString("sm_dsdepartamento"));
                    paisDTO.setScpais(rs.getBigDecimal("sm_scpais"));
                    departamentoDTO.setPais(paisDTO);
                    listDepartamentos.add(departamentoDTO);
                }
            }
            
        }catch(SQLException sqle){
            throw sqle;
        }finally{
            closeResources(conn, pst, rs);
        }      
        return listDepartamentos;
    }
}
